package Shifu.MainServer.Management;

import Shifu.MainServer.Net.PeerServer;
import java.io.Serializable;

/**
 * Descrive un Peer e contine lo stub per interagire con esso
 */

public class Peer implements Serializable {

	/* campi */
	
	private String id;

	private PeerServer stub;

	private String username;


	/**
	 * Instanzia l'oggetto Peer
	 * @param id l'identificativo del peer
	 * @param stub lo stub per dialogare con il peerServer
	 * @param username l'username usato dall'utente
	 */

	public Peer(String id,PeerServer stub,String username) {
		this.id = id;
		this.stub = stub;
		this.username = username;
	}

	/* metodi */

	/**
	 * Ritorna id dell'peer
	 * @return id
	 */
	
	public String getId() {
		return this.id;
	}

	/**
	 * Ritorna lo stub del PeerServer
	 * @return stub del PeerServer
	 */

	public PeerServer getStub() {
		return this.stub;
	}

	/**
	 * Dice se l'oggetto è avable
	 * @return l'username
	 */

	public String getUsername() {
		return this.username;
	}

	/**
	 * Imposta l'id del peer
	 * @param id del peer
	 */
	
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * Imposta lo stub del server
	 * @param stub del peerserver
	 */

	public void setStub(PeerServer stub) {
		this.stub = stub;
	}


	/**
 	 * Imposta se il peers è avable 
	 * @param username dell'oggetto
	 */

	public void setUsername(String username) {
		this.username = username;	
	}


	/**
	 * Genera un stringa che indica lo stato del peer
	 * @return la stringa
	 */

	public String toString() {
		return "Peer id: "+this.id+" username: "+this.username;
	}
}
